// 前后端交互
// ajax jq-ajax axios wx.request 
// ajax ---http协议交互
// websocket --ws协议
import axios from 'axios'

export default function(url,method="get",data,headerType="form"){
  // process.env.nodeENV --判断当前的开发环境设置不同的baseURL
  //  process.env.NODE_ENV---development开发环境
  // development开发环境
  // production 生产环境

  let sevice=axios.create({
    baseURL:'/VueHandler',
    timeout:7000
  })
  // axios 把post方式可以切换不同的请求头数据类型
   if (method == "post") {
    if (headerType == "json") {
      //json类型 数据 {name:1,age=2}
      sevice.defaults.headers.post["Content-type"] = "application/json";
    } else if (headerType == "mul") {
      //上传请求的头  formdata类型的文件数据包
      sevice.defaults.headers.post["Content-type"] = "multipart/form-data";
    } else if(headerType=="form"){
      // POST 请求发送表单类型数据  参数序列化 name=1&age=2
        sevice.defaults.headers.post["Content-type"] = "application/x-www-form-urlencoded";
    }
  }
  // 请求拦截器的配置 从loaclStorage 取出token 携带到请求头

  sevice.interceptors.request.use(config=>{
      // if(localStorage.token){
      //   // 携带到请求头
      //     config.headers['Authorization']='Bearer'+localStorage.token
      // }
    

    return config
  })
  // 响应拦截器 根据公司设计的公共状态 进行公共提示
  sevice.interceptors.response.use(res=>{
      if(res.data.err){ //如果后台返回失败
          // 失败原因提示给用户
   
      }
      if(res.data.code=="30001"){
     
      }
      return res
  },err=>{
      console.log("请求错误提示")
  })
  // 返回了 配置好baseURL ,请求头，请求拦截器，响应拦截器的axios对象
  return sevice({
    url,
    method,
    [method=="get"?'params':'data']:data
  })
}

